Datacenters are a collection of computers linked to each other by means of a network so as to collectively provide computing power. In the context of datacenters, or equally: cloud computing, the computers are called hosts. The hosts can be stand-alone computers, such as personal computers, or so-called “server blades” which are usually single board computers that fit in large numbers in a common mounting rack so that a plurality of such server blades are arranged next to each other. A datacenter can be located at one location, such as a room or a building, but may also be well distributed over several locations, so that hosts in different rooms, buildings, and places act as one datacenter.
In datacenters or cloud computing environments that make use of virtualization, the so-called virtual machines (VM) are the basic resource containers in order to offer resources to an operating systems (OS) running on such a virtual machine. The resources of a virtual machine can be used like those of a real physical machine.
In practice, multiple VMs can run co-located on one physical machine, i.e. on one host. Correspondingly, these co-located VMs are sharing the CPU, memory and hardware devices of their host. Access to the physical hardware is managed by a software instance which is usually called the “hypervisor”. With the help of hypervisors, VMs can be moved to other hosts in a networked datacenter during runtime, which is called (live-) migration of a VM. In other words, a VM and can be re-located in a running state without disturbing its running applications
Existing solutions like VMware™ DRS (cf. http://www.vmware.com/products/drs/) offer an automatic placement of VMs onto hosts with a strategy that considers hardware resource demands (e.g. CPU or memory). In order to keep resource usage as balanced as possible, VMs are usually placed more or less equally over the whole datacenter. Also, dynamic re-location can be activated which may move VMs from one host to another if their resource demands (CPU or memory) change during runtime and are better satisfied by another VM/host mapping.
However, VMs are not to be seen as stand-alone processing entities, since several VMs may be communicate with each other so as to execute some common task(s). For example, one VM may run a webserver application, whereas another VM may run a content server application. The webserver may control access to the content handled by the content server. As a consequence, there may be significant data exchange between the two servers, i.e. between the two respective VMs.
The problem with existing allocation/re-location solutions is that they do not consider communication relations and network load between VMs. They evaluate local indicators only (e.g. CPU load, memory usage, etc.) and look at each host independently. This results in an inefficient usage of the network resources that are available in a datacenter. Following the above example, the allocation of the VMs running the webserver and the content server, respectively, has significant impact on network load, network and datacenter performance, and also energy consumption.
There is correspondingly a need for an improved mechanism of allocating virtual machines on hosts of a datacenter. It is thus an object of the present invention to provide an improved method of operating a datacenter, an improved datacenter entity, an improved program comprising instruction code configuring a processing unit of a datacenter entity, and an improved system for use in at least one datacenter.